Crate nvml_wrapper_sys [−] [src]
Rust bindings for the NVIDIA Management Library (NVML), a C-based programmatic interface for monitoring and managing various states within NVIDIA (primarily Tesla) GPUs.
If you want a safe wrapper, please see the crate nvml-wrapper
.
It is intended to be a platform for building 3rd-party applications, and is also the underlying library for NVIDIA's nvidia-smi tool.
NVML supports the following platforms:
- Windows
- Windows Server 2008 R2 64-bit
- Windows Server 2012 R2 64-bit
- Windows 7 64-bit
- Windows 8 64-bit
- Windows 10 64-bit
- Linux
- 64-bit
- 32-bit
- Hypervisors
- Windows Server 2008R2/2012 Hyper-V 64-bit
- Citrix XenServer 6.2 SP1+
- VMware ESX 5.1/5.5
And the following products:
- Full Support
- Tesla products Fermi architecture and up
- Quadro products Fermi architecture and up
- GRID products Kepler architecture and up
- Select GeForce Titan products
- Limited Support
- All GeForce products Fermi architecture and up
Compilation
The NVML library comes with the NVIDIA drivers and is essentially present on any system with a functioning NVIDIA graphics card. The compilation steps vary between Windows and Linux, however.
Windows
The NVML library dll can be found at %ProgramW6432%\NVIDIA Corporation\NVSMI\
(which is C:\Program Files\NVIDIA Corporation\NVSMI\
on my machine). You will need
to add this folder to your PATH
in order to have everything work properly at
runtime; alternatively, place a copy of the dll in the same folder as your executable.
Linux
The NVML library can be found at /usr/lib/nvidia-<driver-version>/libnvidia-ml.so
; on my system with driver version 375.51 installed, this puts the library at
/usr/lib/nvidia-375/libnvidia-ml.so
. You will need to create a symbolic link:
sudo ln -s /usr/lib/nvidia-<driver-version>/libnvidia-ml.so /usr/lib
Rustc Support
Currently supports rustc 1.17.0 or greater. The target version is the latest stable version; I do not intend to pin to an older one at any time.
A small amount of NVML features involve dealing with untagged unions over FFI; a
rustc nightly-only type is used in order to facilitate this. If you require use
of the nightly-only functionality, compile with the nightly
feature toggled on
(and of course, with a nightly compiler):
cargo build --features "nightly"
Cargo Features
The nightly
feature can be toggled on to enable nightly-only features; read above.
Modules
bindings |